/*删除排序链表中的重复元素
 */


struct ListNode* deleteDuplicates(struct ListNode* head){
if(head==NULL||head->next==NULL)
return head;
struct ListNode* tmp=malloc(sizeof(struct ListNode));
tmp->val=1;
tmp->next=head;
struct ListNode* q=tmp;//当q=head时删除不了第一个节点，我们标记的是需要删除的前一个，所以q=tmp
int x=0;


while(q->next!=NULL&&q->next->next!=NULL)//标记需要删除的前一个节点
{
    if(q->next->val==q->next->next->val)
    {
        x=q->next->val;
        while(q->next!=NULL&&q->next->val==x)
        {
            q->next=q->next->next;//q指向下一个之后如果val==x会继续执行
        }
    }
    else
    {
        q=q->next;
    }
}
return tmp->next;
}